package property.pojo;

import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

public class NoticeExample {
    protected String orderByClause;

    protected boolean distinct;

    protected List<Criteria> oredCriteria;

    public NoticeExample() {
        oredCriteria = new ArrayList<>();
    }

    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }

    public String getOrderByClause() {
        return orderByClause;
    }

    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }

    public boolean isDistinct() {
        return distinct;
    }

    public List<Criteria> getOredCriteria() {
        return oredCriteria;
    }

    public void or(Criteria criteria) {
        oredCriteria.add(criteria);
    }

    public Criteria or() {
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }

    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }

    protected Criteria createCriteriaInternal() {
        Criteria criteria = new Criteria();
        return criteria;
    }

    public void clear() {
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
    }

    protected abstract static class GeneratedCriteria {
        protected List<Criterion> criteria;

        protected GeneratedCriteria() {
            super();
            criteria = new ArrayList<>();
        }

        public boolean isValid() {
            return criteria.size() > 0;
        }

        public List<Criterion> getAllCriteria() {
            return criteria;
        }

        public List<Criterion> getCriteria() {
            return criteria;
        }

        protected void addCriterion(String condition) {
            if (condition == null) {
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteria.add(new Criterion(condition));
        }

        protected void addCriterion(String condition, Object value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value));
        }

        protected void addCriterion(String condition, Object value1, Object value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value1, value2));
        }

        protected void addCriterionForJDBCDate(String condition, Date value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            addCriterion(condition, new java.sql.Date(value.getTime()), property);
        }

        protected void addCriterionForJDBCDate(String condition, List<Date> values, String property) {
            if (values == null || values.size() == 0) {
                throw new RuntimeException("Value list for " + property + " cannot be null or empty");
            }
            List<java.sql.Date> dateList = new ArrayList<>();
            Iterator<Date> iter = values.iterator();
            while (iter.hasNext()) {
                dateList.add(new java.sql.Date(iter.next().getTime()));
            }
            addCriterion(condition, dateList, property);
        }

        protected void addCriterionForJDBCDate(String condition, Date value1, Date value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            addCriterion(condition, new java.sql.Date(value1.getTime()), new java.sql.Date(value2.getTime()), property);
        }

        public Criteria andNIdIsNull() {
            addCriterion("n_id is null");
            return (Criteria) this;
        }

        public Criteria andNIdIsNotNull() {
            addCriterion("n_id is not null");
            return (Criteria) this;
        }

        public Criteria andNIdEqualTo(Integer value) {
            addCriterion("n_id =", value, "nId");
            return (Criteria) this;
        }

        public Criteria andNIdNotEqualTo(Integer value) {
            addCriterion("n_id <>", value, "nId");
            return (Criteria) this;
        }

        public Criteria andNIdGreaterThan(Integer value) {
            addCriterion("n_id >", value, "nId");
            return (Criteria) this;
        }

        public Criteria andNIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("n_id >=", value, "nId");
            return (Criteria) this;
        }

        public Criteria andNIdLessThan(Integer value) {
            addCriterion("n_id <", value, "nId");
            return (Criteria) this;
        }

        public Criteria andNIdLessThanOrEqualTo(Integer value) {
            addCriterion("n_id <=", value, "nId");
            return (Criteria) this;
        }

        public Criteria andNIdIn(List<Integer> values) {
            addCriterion("n_id in", values, "nId");
            return (Criteria) this;
        }

        public Criteria andNIdNotIn(List<Integer> values) {
            addCriterion("n_id not in", values, "nId");
            return (Criteria) this;
        }

        public Criteria andNIdBetween(Integer value1, Integer value2) {
            addCriterion("n_id between", value1, value2, "nId");
            return (Criteria) this;
        }

        public Criteria andNIdNotBetween(Integer value1, Integer value2) {
            addCriterion("n_id not between", value1, value2, "nId");
            return (Criteria) this;
        }

        public Criteria andNPublishDateIsNull() {
            addCriterion("n_publish_date is null");
            return (Criteria) this;
        }

        public Criteria andNPublishDateIsNotNull() {
            addCriterion("n_publish_date is not null");
            return (Criteria) this;
        }

        public Criteria andNPublishDateEqualTo(Date value) {
            addCriterionForJDBCDate("n_publish_date =", value, "nPublishDate");
            return (Criteria) this;
        }

        public Criteria andNPublishDateNotEqualTo(Date value) {
            addCriterionForJDBCDate("n_publish_date <>", value, "nPublishDate");
            return (Criteria) this;
        }

        public Criteria andNPublishDateGreaterThan(Date value) {
            addCriterionForJDBCDate("n_publish_date >", value, "nPublishDate");
            return (Criteria) this;
        }

        public Criteria andNPublishDateGreaterThanOrEqualTo(Date value) {
            addCriterionForJDBCDate("n_publish_date >=", value, "nPublishDate");
            return (Criteria) this;
        }

        public Criteria andNPublishDateLessThan(Date value) {
            addCriterionForJDBCDate("n_publish_date <", value, "nPublishDate");
            return (Criteria) this;
        }

        public Criteria andNPublishDateLessThanOrEqualTo(Date value) {
            addCriterionForJDBCDate("n_publish_date <=", value, "nPublishDate");
            return (Criteria) this;
        }

        public Criteria andNPublishDateIn(List<Date> values) {
            addCriterionForJDBCDate("n_publish_date in", values, "nPublishDate");
            return (Criteria) this;
        }

        public Criteria andNPublishDateNotIn(List<Date> values) {
            addCriterionForJDBCDate("n_publish_date not in", values, "nPublishDate");
            return (Criteria) this;
        }

        public Criteria andNPublishDateBetween(Date value1, Date value2) {
            addCriterionForJDBCDate("n_publish_date between", value1, value2, "nPublishDate");
            return (Criteria) this;
        }

        public Criteria andNPublishDateNotBetween(Date value1, Date value2) {
            addCriterionForJDBCDate("n_publish_date not between", value1, value2, "nPublishDate");
            return (Criteria) this;
        }

        public Criteria andNTitleIsNull() {
            addCriterion("n_title is null");
            return (Criteria) this;
        }

        public Criteria andNTitleIsNotNull() {
            addCriterion("n_title is not null");
            return (Criteria) this;
        }

        public Criteria andNTitleEqualTo(String value) {
            addCriterion("n_title =", value, "nTitle");
            return (Criteria) this;
        }

        public Criteria andNTitleNotEqualTo(String value) {
            addCriterion("n_title <>", value, "nTitle");
            return (Criteria) this;
        }

        public Criteria andNTitleGreaterThan(String value) {
            addCriterion("n_title >", value, "nTitle");
            return (Criteria) this;
        }

        public Criteria andNTitleGreaterThanOrEqualTo(String value) {
            addCriterion("n_title >=", value, "nTitle");
            return (Criteria) this;
        }

        public Criteria andNTitleLessThan(String value) {
            addCriterion("n_title <", value, "nTitle");
            return (Criteria) this;
        }

        public Criteria andNTitleLessThanOrEqualTo(String value) {
            addCriterion("n_title <=", value, "nTitle");
            return (Criteria) this;
        }

        public Criteria andNTitleLike(String value) {
            addCriterion("n_title like", value, "nTitle");
            return (Criteria) this;
        }

        public Criteria andNTitleNotLike(String value) {
            addCriterion("n_title not like", value, "nTitle");
            return (Criteria) this;
        }

        public Criteria andNTitleIn(List<String> values) {
            addCriterion("n_title in", values, "nTitle");
            return (Criteria) this;
        }

        public Criteria andNTitleNotIn(List<String> values) {
            addCriterion("n_title not in", values, "nTitle");
            return (Criteria) this;
        }

        public Criteria andNTitleBetween(String value1, String value2) {
            addCriterion("n_title between", value1, value2, "nTitle");
            return (Criteria) this;
        }

        public Criteria andNTitleNotBetween(String value1, String value2) {
            addCriterion("n_title not between", value1, value2, "nTitle");
            return (Criteria) this;
        }

        public Criteria andNContentIsNull() {
            addCriterion("n_content is null");
            return (Criteria) this;
        }

        public Criteria andNContentIsNotNull() {
            addCriterion("n_content is not null");
            return (Criteria) this;
        }

        public Criteria andNContentEqualTo(String value) {
            addCriterion("n_content =", value, "nContent");
            return (Criteria) this;
        }

        public Criteria andNContentNotEqualTo(String value) {
            addCriterion("n_content <>", value, "nContent");
            return (Criteria) this;
        }

        public Criteria andNContentGreaterThan(String value) {
            addCriterion("n_content >", value, "nContent");
            return (Criteria) this;
        }

        public Criteria andNContentGreaterThanOrEqualTo(String value) {
            addCriterion("n_content >=", value, "nContent");
            return (Criteria) this;
        }

        public Criteria andNContentLessThan(String value) {
            addCriterion("n_content <", value, "nContent");
            return (Criteria) this;
        }

        public Criteria andNContentLessThanOrEqualTo(String value) {
            addCriterion("n_content <=", value, "nContent");
            return (Criteria) this;
        }

        public Criteria andNContentLike(String value) {
            addCriterion("n_content like", value, "nContent");
            return (Criteria) this;
        }

        public Criteria andNContentNotLike(String value) {
            addCriterion("n_content not like", value, "nContent");
            return (Criteria) this;
        }

        public Criteria andNContentIn(List<String> values) {
            addCriterion("n_content in", values, "nContent");
            return (Criteria) this;
        }

        public Criteria andNContentNotIn(List<String> values) {
            addCriterion("n_content not in", values, "nContent");
            return (Criteria) this;
        }

        public Criteria andNContentBetween(String value1, String value2) {
            addCriterion("n_content between", value1, value2, "nContent");
            return (Criteria) this;
        }

        public Criteria andNContentNotBetween(String value1, String value2) {
            addCriterion("n_content not between", value1, value2, "nContent");
            return (Criteria) this;
        }

        public Criteria andNAttachmentsIsNull() {
            addCriterion("n_attachments is null");
            return (Criteria) this;
        }

        public Criteria andNAttachmentsIsNotNull() {
            addCriterion("n_attachments is not null");
            return (Criteria) this;
        }

        public Criteria andNAttachmentsEqualTo(String value) {
            addCriterion("n_attachments =", value, "nAttachments");
            return (Criteria) this;
        }

        public Criteria andNAttachmentsNotEqualTo(String value) {
            addCriterion("n_attachments <>", value, "nAttachments");
            return (Criteria) this;
        }

        public Criteria andNAttachmentsGreaterThan(String value) {
            addCriterion("n_attachments >", value, "nAttachments");
            return (Criteria) this;
        }

        public Criteria andNAttachmentsGreaterThanOrEqualTo(String value) {
            addCriterion("n_attachments >=", value, "nAttachments");
            return (Criteria) this;
        }

        public Criteria andNAttachmentsLessThan(String value) {
            addCriterion("n_attachments <", value, "nAttachments");
            return (Criteria) this;
        }

        public Criteria andNAttachmentsLessThanOrEqualTo(String value) {
            addCriterion("n_attachments <=", value, "nAttachments");
            return (Criteria) this;
        }

        public Criteria andNAttachmentsLike(String value) {
            addCriterion("n_attachments like", value, "nAttachments");
            return (Criteria) this;
        }

        public Criteria andNAttachmentsNotLike(String value) {
            addCriterion("n_attachments not like", value, "nAttachments");
            return (Criteria) this;
        }

        public Criteria andNAttachmentsIn(List<String> values) {
            addCriterion("n_attachments in", values, "nAttachments");
            return (Criteria) this;
        }

        public Criteria andNAttachmentsNotIn(List<String> values) {
            addCriterion("n_attachments not in", values, "nAttachments");
            return (Criteria) this;
        }

        public Criteria andNAttachmentsBetween(String value1, String value2) {
            addCriterion("n_attachments between", value1, value2, "nAttachments");
            return (Criteria) this;
        }

        public Criteria andNAttachmentsNotBetween(String value1, String value2) {
            addCriterion("n_attachments not between", value1, value2, "nAttachments");
            return (Criteria) this;
        }

        public Criteria andNTargetIsNull() {
            addCriterion("n_target is null");
            return (Criteria) this;
        }

        public Criteria andNTargetIsNotNull() {
            addCriterion("n_target is not null");
            return (Criteria) this;
        }

        public Criteria andNTargetEqualTo(Byte value) {
            addCriterion("n_target =", value, "nTarget");
            return (Criteria) this;
        }

        public Criteria andNTargetNotEqualTo(Byte value) {
            addCriterion("n_target <>", value, "nTarget");
            return (Criteria) this;
        }

        public Criteria andNTargetGreaterThan(Byte value) {
            addCriterion("n_target >", value, "nTarget");
            return (Criteria) this;
        }

        public Criteria andNTargetGreaterThanOrEqualTo(Byte value) {
            addCriterion("n_target >=", value, "nTarget");
            return (Criteria) this;
        }

        public Criteria andNTargetLessThan(Byte value) {
            addCriterion("n_target <", value, "nTarget");
            return (Criteria) this;
        }

        public Criteria andNTargetLessThanOrEqualTo(Byte value) {
            addCriterion("n_target <=", value, "nTarget");
            return (Criteria) this;
        }

        public Criteria andNTargetIn(List<Byte> values) {
            addCriterion("n_target in", values, "nTarget");
            return (Criteria) this;
        }

        public Criteria andNTargetNotIn(List<Byte> values) {
            addCriterion("n_target not in", values, "nTarget");
            return (Criteria) this;
        }

        public Criteria andNTargetBetween(Byte value1, Byte value2) {
            addCriterion("n_target between", value1, value2, "nTarget");
            return (Criteria) this;
        }

        public Criteria andNTargetNotBetween(Byte value1, Byte value2) {
            addCriterion("n_target not between", value1, value2, "nTarget");
            return (Criteria) this;
        }

        public Criteria andNGradeIsNull() {
            addCriterion("n_grade is null");
            return (Criteria) this;
        }

        public Criteria andNGradeIsNotNull() {
            addCriterion("n_grade is not null");
            return (Criteria) this;
        }

        public Criteria andNGradeEqualTo(Byte value) {
            addCriterion("n_grade =", value, "nGrade");
            return (Criteria) this;
        }

        public Criteria andNGradeNotEqualTo(Byte value) {
            addCriterion("n_grade <>", value, "nGrade");
            return (Criteria) this;
        }

        public Criteria andNGradeGreaterThan(Byte value) {
            addCriterion("n_grade >", value, "nGrade");
            return (Criteria) this;
        }

        public Criteria andNGradeGreaterThanOrEqualTo(Byte value) {
            addCriterion("n_grade >=", value, "nGrade");
            return (Criteria) this;
        }

        public Criteria andNGradeLessThan(Byte value) {
            addCriterion("n_grade <", value, "nGrade");
            return (Criteria) this;
        }

        public Criteria andNGradeLessThanOrEqualTo(Byte value) {
            addCriterion("n_grade <=", value, "nGrade");
            return (Criteria) this;
        }

        public Criteria andNGradeIn(List<Byte> values) {
            addCriterion("n_grade in", values, "nGrade");
            return (Criteria) this;
        }

        public Criteria andNGradeNotIn(List<Byte> values) {
            addCriterion("n_grade not in", values, "nGrade");
            return (Criteria) this;
        }

        public Criteria andNGradeBetween(Byte value1, Byte value2) {
            addCriterion("n_grade between", value1, value2, "nGrade");
            return (Criteria) this;
        }

        public Criteria andNGradeNotBetween(Byte value1, Byte value2) {
            addCriterion("n_grade not between", value1, value2, "nGrade");
            return (Criteria) this;
        }

        public Criteria andNStatusIsNull() {
            addCriterion("n_status is null");
            return (Criteria) this;
        }

        public Criteria andNStatusIsNotNull() {
            addCriterion("n_status is not null");
            return (Criteria) this;
        }

        public Criteria andNStatusEqualTo(Byte value) {
            addCriterion("n_status =", value, "nStatus");
            return (Criteria) this;
        }

        public Criteria andNStatusNotEqualTo(Byte value) {
            addCriterion("n_status <>", value, "nStatus");
            return (Criteria) this;
        }

        public Criteria andNStatusGreaterThan(Byte value) {
            addCriterion("n_status >", value, "nStatus");
            return (Criteria) this;
        }

        public Criteria andNStatusGreaterThanOrEqualTo(Byte value) {
            addCriterion("n_status >=", value, "nStatus");
            return (Criteria) this;
        }

        public Criteria andNStatusLessThan(Byte value) {
            addCriterion("n_status <", value, "nStatus");
            return (Criteria) this;
        }

        public Criteria andNStatusLessThanOrEqualTo(Byte value) {
            addCriterion("n_status <=", value, "nStatus");
            return (Criteria) this;
        }

        public Criteria andNStatusIn(List<Byte> values) {
            addCriterion("n_status in", values, "nStatus");
            return (Criteria) this;
        }

        public Criteria andNStatusNotIn(List<Byte> values) {
            addCriterion("n_status not in", values, "nStatus");
            return (Criteria) this;
        }

        public Criteria andNStatusBetween(Byte value1, Byte value2) {
            addCriterion("n_status between", value1, value2, "nStatus");
            return (Criteria) this;
        }

        public Criteria andNStatusNotBetween(Byte value1, Byte value2) {
            addCriterion("n_status not between", value1, value2, "nStatus");
            return (Criteria) this;
        }

        public Criteria andNCategoryIsNull() {
            addCriterion("n_category is null");
            return (Criteria) this;
        }

        public Criteria andNCategoryIsNotNull() {
            addCriterion("n_category is not null");
            return (Criteria) this;
        }

        public Criteria andNCategoryEqualTo(String value) {
            addCriterion("n_category =", value, "nCategory");
            return (Criteria) this;
        }

        public Criteria andNCategoryNotEqualTo(String value) {
            addCriterion("n_category <>", value, "nCategory");
            return (Criteria) this;
        }

        public Criteria andNCategoryGreaterThan(String value) {
            addCriterion("n_category >", value, "nCategory");
            return (Criteria) this;
        }

        public Criteria andNCategoryGreaterThanOrEqualTo(String value) {
            addCriterion("n_category >=", value, "nCategory");
            return (Criteria) this;
        }

        public Criteria andNCategoryLessThan(String value) {
            addCriterion("n_category <", value, "nCategory");
            return (Criteria) this;
        }

        public Criteria andNCategoryLessThanOrEqualTo(String value) {
            addCriterion("n_category <=", value, "nCategory");
            return (Criteria) this;
        }

        public Criteria andNCategoryLike(String value) {
            addCriterion("n_category like", value, "nCategory");
            return (Criteria) this;
        }

        public Criteria andNCategoryNotLike(String value) {
            addCriterion("n_category not like", value, "nCategory");
            return (Criteria) this;
        }

        public Criteria andNCategoryIn(List<String> values) {
            addCriterion("n_category in", values, "nCategory");
            return (Criteria) this;
        }

        public Criteria andNCategoryNotIn(List<String> values) {
            addCriterion("n_category not in", values, "nCategory");
            return (Criteria) this;
        }

        public Criteria andNCategoryBetween(String value1, String value2) {
            addCriterion("n_category between", value1, value2, "nCategory");
            return (Criteria) this;
        }

        public Criteria andNCategoryNotBetween(String value1, String value2) {
            addCriterion("n_category not between", value1, value2, "nCategory");
            return (Criteria) this;
        }

        public Criteria andNTagIsNull() {
            addCriterion("n_tag is null");
            return (Criteria) this;
        }

        public Criteria andNTagIsNotNull() {
            addCriterion("n_tag is not null");
            return (Criteria) this;
        }

        public Criteria andNTagEqualTo(String value) {
            addCriterion("n_tag =", value, "nTag");
            return (Criteria) this;
        }

        public Criteria andNTagNotEqualTo(String value) {
            addCriterion("n_tag <>", value, "nTag");
            return (Criteria) this;
        }

        public Criteria andNTagGreaterThan(String value) {
            addCriterion("n_tag >", value, "nTag");
            return (Criteria) this;
        }

        public Criteria andNTagGreaterThanOrEqualTo(String value) {
            addCriterion("n_tag >=", value, "nTag");
            return (Criteria) this;
        }

        public Criteria andNTagLessThan(String value) {
            addCriterion("n_tag <", value, "nTag");
            return (Criteria) this;
        }

        public Criteria andNTagLessThanOrEqualTo(String value) {
            addCriterion("n_tag <=", value, "nTag");
            return (Criteria) this;
        }

        public Criteria andNTagLike(String value) {
            addCriterion("n_tag like", value, "nTag");
            return (Criteria) this;
        }

        public Criteria andNTagNotLike(String value) {
            addCriterion("n_tag not like", value, "nTag");
            return (Criteria) this;
        }

        public Criteria andNTagIn(List<String> values) {
            addCriterion("n_tag in", values, "nTag");
            return (Criteria) this;
        }

        public Criteria andNTagNotIn(List<String> values) {
            addCriterion("n_tag not in", values, "nTag");
            return (Criteria) this;
        }

        public Criteria andNTagBetween(String value1, String value2) {
            addCriterion("n_tag between", value1, value2, "nTag");
            return (Criteria) this;
        }

        public Criteria andNTagNotBetween(String value1, String value2) {
            addCriterion("n_tag not between", value1, value2, "nTag");
            return (Criteria) this;
        }

        public Criteria andNAdminIdIsNull() {
            addCriterion("n_admin_id is null");
            return (Criteria) this;
        }

        public Criteria andNAdminIdIsNotNull() {
            addCriterion("n_admin_id is not null");
            return (Criteria) this;
        }

        public Criteria andNAdminIdEqualTo(Integer value) {
            addCriterion("n_admin_id =", value, "nAdminId");
            return (Criteria) this;
        }

        public Criteria andNAdminIdNotEqualTo(Integer value) {
            addCriterion("n_admin_id <>", value, "nAdminId");
            return (Criteria) this;
        }

        public Criteria andNAdminIdGreaterThan(Integer value) {
            addCriterion("n_admin_id >", value, "nAdminId");
            return (Criteria) this;
        }

        public Criteria andNAdminIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("n_admin_id >=", value, "nAdminId");
            return (Criteria) this;
        }

        public Criteria andNAdminIdLessThan(Integer value) {
            addCriterion("n_admin_id <", value, "nAdminId");
            return (Criteria) this;
        }

        public Criteria andNAdminIdLessThanOrEqualTo(Integer value) {
            addCriterion("n_admin_id <=", value, "nAdminId");
            return (Criteria) this;
        }

        public Criteria andNAdminIdIn(List<Integer> values) {
            addCriterion("n_admin_id in", values, "nAdminId");
            return (Criteria) this;
        }

        public Criteria andNAdminIdNotIn(List<Integer> values) {
            addCriterion("n_admin_id not in", values, "nAdminId");
            return (Criteria) this;
        }

        public Criteria andNAdminIdBetween(Integer value1, Integer value2) {
            addCriterion("n_admin_id between", value1, value2, "nAdminId");
            return (Criteria) this;
        }

        public Criteria andNAdminIdNotBetween(Integer value1, Integer value2) {
            addCriterion("n_admin_id not between", value1, value2, "nAdminId");
            return (Criteria) this;
        }
    }

    public static class Criteria extends GeneratedCriteria {
        protected Criteria() {
            super();
        }
    }

    public static class Criterion {
        private String condition;

        private Object value;

        private Object secondValue;

        private boolean noValue;

        private boolean singleValue;

        private boolean betweenValue;

        private boolean listValue;

        private String typeHandler;

        public String getCondition() {
            return condition;
        }

        public Object getValue() {
            return value;
        }

        public Object getSecondValue() {
            return secondValue;
        }

        public boolean isNoValue() {
            return noValue;
        }

        public boolean isSingleValue() {
            return singleValue;
        }

        public boolean isBetweenValue() {
            return betweenValue;
        }

        public boolean isListValue() {
            return listValue;
        }

        public String getTypeHandler() {
            return typeHandler;
        }

        protected Criterion(String condition) {
            super();
            this.condition = condition;
            this.typeHandler = null;
            this.noValue = true;
        }

        protected Criterion(String condition, Object value, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.typeHandler = typeHandler;
            if (value instanceof List<?>) {
                this.listValue = true;
            } else {
                this.singleValue = true;
            }
        }

        protected Criterion(String condition, Object value) {
            this(condition, value, null);
        }

        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.secondValue = secondValue;
            this.typeHandler = typeHandler;
            this.betweenValue = true;
        }

        protected Criterion(String condition, Object value, Object secondValue) {
            this(condition, value, secondValue, null);
        }
    }
}